package main

import (
	"fmt"
	"strconv"
	"sync"
)

var m = make(map[string]int)

func get(key string) int {
	return m[key]
}
func set(key string, value int) {
	m[key] = value
}

var m2 = sync.Map{}

func main() {
	wg := sync.WaitGroup{}

	// for i := 0; i < 20; i++ {
	// 	wg.Add(1)
	// 	go func(n int) {
	// 		key := strconv.Itoa(n)
	// 		set(key, n)
	// 		fmt.Printf("key: %v value: %v\n", key, get(key))
	// 		wg.Done()
	// 	}(i)
	// }

	// sync.Map
	for i := 0; i < 20; i++ {
		wg.Add(1)
		go func(n int) {
			key := strconv.Itoa(n)
			m2.Store(key, n)         // 使用内置的store方法设置键值对
			value, _ := m2.Load(key) // 使用内置的Load方法设置键值对
			fmt.Printf("key: %v value: %v\n", key, value)
			wg.Done()
		}(i)
	}

	wg.Wait()
}
